package com.cysyz.mylib.io.filesavetool;

import com.cysyz.mylib.io.filesavetool.impl.FileSavePathAndLogicPath;

import java.io.File;
import java.io.IOException;

public interface IFileSaveTool {

	FileSavePathAndLogicPath saveFile(byte[] srcBytes, String srcFileName, String saveDir) throws IOException;

	FileSavePathAndLogicPath saveFile(byte[] srcBytes, String srcFileName) throws IOException;

	FileSavePathAndLogicPath saveFile(byte[] srcBytes) throws IOException;

	/** @Title: saveFile
     * @Description: TODO
     * @Author: 崔勇	cysyz1229@gmail.com
     * @Version: V1.00
     * @Date 2014-2-17 上午11:28:00
     * @param srcFile 要保存的文件
     * @param srcFileName   要保存的文件名称，像web中文件上传时，srcFile只是一个服务端接受来自客户端的文件后生成的临时文件，并不是客户端上传时的那个文件。因此客户端的文件名称需要另外提供
     * @param saveDir 文件的保存目录
     * @return 文件保存的逻辑路径
     */
    public FileSavePathAndLogicPath saveFile(File srcFile, String srcFileName, String saveDir) throws IOException;

	/**
	 * 保存到图片服务器
	 * 
	 * @since 1.0
	 * @author 崔勇
	 * @param srcFileBytes
	 *            要保存的文件字节数组
	 * @param srcFileName
	 *            要保存的文件的名字
	 * @param saveBaseURL
	 *            要保存到的远程服务器的物理根目录
	 * @param saveDir
	 *            要保存的远程服务器的物理根目录下的某个子目录
	 * @param saveFileToRemoteTool 
	 * 			     负责保存文件到远程服务器的接口
	 * @return 物理无关的文件保存路径
	 */
	public abstract String saveFile(byte[] srcFileBytes, String srcFileName,
			String saveBaseURL, String saveDir,
			ISaveFileToRemoteTool saveFileToRemoteTool);

	/**
	 * 保存到图片服务器1
	 * 
	 * @since 1.0
	 * @author 崔勇
	 * @param srcFileBytes
	 *            要保存的文件字节数组
	 * @param srcFileName
	 *            要保存的文件的名字
	 * @param saveBaseURL
	 *            要保存到的远程服务器的物理根目录
	 * @param saveDir
	 *            要保存的远程服务器的物理根目录下的某个子目录
	 * @param suffix
	 *            保存文件的后缀
	 * @param saveFileToRemoteTool
	 * 
	 * @return 物理无关的文件保存路径
	 */
	public abstract String saveFile(byte[] srcFileBytes, String srcFileName,
			String saveBaseURL, String saveDir, String suffix,
			ISaveFileToRemoteTool saveFileToRemoteTool);

	public String getRealSavePath(String logicPath, String fileSaveDir);
}